// tt--------------------------------------------------------------
// 2 失去焦点 结束修改
// 1 给input标签绑定 失去焦点事件(不能使用事件委托了， 因为只有表单标签存在失去焦点事件)
// 2 获取到输入框里面的内容，拼接成参数 发送给后端 完成编辑
// 3 后端响应 编辑成功
// 1 弹出一个提示
// 2 重新获取最新的数据
const tbody = document.querySelector('tbody');
getScoreList()

// 给分数 单元格绑定双击事件
tbody.addEventListener('dblclick', function (e) {
    const dom = e.target;
    if (dom.nodeName === 'TD' && dom.classList.contains('score')) {
        console.log('可以修改');
        const input = dom.querySelector('input');
        console.log(dom)
        input.style.display = 'block';

        // 设置 input标签的value 等于当前单元格内的文本
        // console.log(dom.innerHTML); // 获取到可能会包含标签
        // console.log(dom.innerText); // 只获取文本而已
        input.value = dom.innerText;
        // 获得焦点！！！
        input.focus();
    }
});

//  发送请求获取成绩数据 渲染页面
function getScoreList() {
    console.log(11)
    axios.get('/score/list').then((result) => {
        console.log(result);
        // console.log(result);
        // 判断 业务码 是否正确
        if (result.data.code === 0) {
            console.log(result.data.data);
            const obj = result.data.data;
            // 遍历对象 生成html标签
            let html = '';

            // 动态渲染
            for (const key in obj) {
                // key = 属性名
                // obj[key] = 属性值
                // 根据成绩 数组来动态生成 多个td标签
                const tempHTML = obj[key].score.reduce(
                    // (h, v) => h + `<td class="score">${v}</td>`,
                    // (h, v) => h + `<td class="score">${v} <input type="text" / > </td>`,
                    (h, v, i) =>
                        h +
                        `<td class="score">${v}
                         <input type="text" data-batch="${i + 1}"  data-id="${key}" / > 
                        </td>`,
                    ''
                );
                // td标签的 拼接成 完整的tr ;
                html += `  
                    <tr>
                    <th scope="row">${key}</th>
                     <td>${obj[key].name}</td>
                    ${tempHTML} 
                    </tr>`;
            }

            // 把html渲染出来
            tbody.innerHTML = html;

            const inputs = document.querySelectorAll('tbody input'); // 获取tbody里面所有的input 遍历的方式绑定 事件
            inputs.forEach((input) =>
                // 绑定失去焦点事件
                input.addEventListener('blur', function (e) {
                    // input.value
                    // 准备 接口要求的数据
                    const data = {
                        // 学员id
                        stu_id: input.dataset.id,
                        // 成绩的次数
                        batch: input.dataset.batch,
                        // 分数
                        score: input.value,
                    };

                    // 数据校验 通过了 才允许发送给后端   省略

                    // 发送给后端 完成修改
                    axios.post('/score/entry', data).then((result) => {
                        if (result.data.code === 0) {
                            // 提示
                            toastr.success(result.data.message);
                            // 获取最新数据 渲染
                            getScoreList();
                        }
                    });
                })
            );
        }
    });
}
